home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 79 / maccd 79.iso / multimedial / GL Tron / Source / gltron / renderer_gl.c < prev    next >
Encoding:
C/C++ Source or Header  |  2001-07-20  |  1.5 KB  |  65 lines  |  [TEXT/CWIE]

  1. #include "renderer_gl.h"
  2.  
  3. #ifdef POLY_COUNT
  4. extern int polycount;
  5. #endif
  6.  
  7. GLstate rendererState;
  8. GLstate *state = &rendererState;
  9.  
  10. void clearState() {
  11.   state->tex_id = 0;
  12.   state->tex_env_mode = 0;
  13.   state->binds = 0;
  14.   state->mod_changes = 0;
  15. }
  16.  
  17. void printRendererInfo() {
  18.   printf("OpenGL Info: '%s'\n%s - %s\n", glGetString(GL_VENDOR),
  19.      glGetString(GL_RENDERER), glGetString(GL_VERSION));
  20.   printf("Extensions available: %s\n", glGetString(GL_EXTENSIONS));
  21. }
  22.  
  23. void renderQuad(Quad *q) {
  24.   int i;
  25.   if(q->type & QUAD_TEXTURE) {
  26.     glEnable(GL_TEXTURE_2D);
  27.     if(state->tex_id != q->texture_id) {
  28.       glBindTexture(GL_TEXTURE_2D, q->texture_id);
  29.       state->binds++;
  30.       state->tex_id = q->texture_id;
  31.     }
  32.     if(q->type & QUAD_TEX_DECAL) {
  33.       if(state->tex_env_mode != GL_DECAL) {
  34.     glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
  35.     state->tex_env_mode = GL_DECAL;
  36.     state->mod_changes++;
  37.       }
  38.     } else if(q->type & QUAD_TEX_MODULATE)
  39.       if(state->tex_env_mode != GL_MODULATE) {
  40.     glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
  41.     state->tex_env_mode = GL_MODULATE;
  42.     state->mod_changes++;
  43.       }
  44.   } else {
  45.     glDisable(GL_TEXTURE_2D);
  46.   }
  47.  
  48.   /* fprintf(stderr, "drawing quad...errors: %d\n", glGetError()); */
  49.  
  50.   glBegin(GL_QUADS);
  51.   
  52.   for(i = 0; i < 4; i++) {
  53.     if(q->type & QUAD_COLOR) glColor4fv(q->vertex[i].color);
  54.     if(q->type & QUAD_TEXTURE) glTexCoord2fv(q->vertex[i].uv);
  55.     glVertex3fv(q->vertex[i].v);
  56.     // printVector3f(q->vertex[i].v);
  57.   }
  58.   glEnd();
  59.  
  60. #ifdef POLY_COUNT
  61.   polycount += 2;
  62. #endif
  63. }
  64.  
  65.